--------------------------------------------
   ProLink LoRaWAN Firmware EU868 release_notes.txt
   2026 IMST GmbH
--------------------------------------------


.1 Content:
----------------------------------------------------------------------------------------------------------
This file contains an overview about the most important feature updates and bugfixes 
----------------------------------------------------------------------------------------------------------

.2 Supported Hardware
--------------------------------------------------------------------------
- iM880B-L   Module : ProLink_LoRaWAN_EndNode_Modem_EU868_iM880B_Vx_y.hex
- iU880B-USB Stick  : ProLink_LoRaWAN_EndNode_Modem_EU868_iU880B_Vx_y.hex
- iM881A-XL  Module : ProLink_LoRaWAN_EndNode_Modem_EU868_iM881AXL_Vx_y.hex
- iM980B-L   Module : ProLink_LoRaWAN_EndNode_Modem_EU868_iM980B_Vx_y.hex

.3 Revision History:
--------------------------------------------------------------------------
27.08.2026 - Release V3.0 / Build Count 223
     - Bugfix related to RFU parameters, e.g. LinkADRReq (update in LoRaWAN certification testing)
     - Fix related to NewChannelReq (LoRaWAN spec not clear)
       (NewChannelReq rejected if it modifies the only available channel for the desired configuration, which would stop further transmissions)

16.12.2024 - Release V3.0 / Build Count 219
     - Bugfix: Duty Cycle implementation updated
     - HCI update: configuration of parameters only available for the selected stack (LoRaWAN/LR-Base)
     - AES Key for proprietary LoRa communication not readable
     - RP002-1.0.3: Regional Parameters document followed

08.05.2023 - Release V3.0 / Build Count 207
     - Bugfix: solved device busy issue if incorrect frame received between Rx1 and Rx2, if Class C configured
     - HCI Bugfix: solved "invalid multicast data indication" after multicast downlink between Rx1 and Rx2 window

14.07.2022 - Release V3.0 / Build Count 203
     - Rx configuration for Multicast in Class C added (HCI Update)

27.01.2022 - Release V3.0 / Build Count 197
     - Default Settings in ProLink updated (Sub-Band Q)

20.09.2021 - Release V3.0 / Build Count 194
     - Internal modifications

28.08.2021 - Release V3.0 / Build Count 191
     - LoRaWAN update for v1.0.4
         * Retransmission back-off for Join Request
         * Change related LinkADRReq if ADR disabled
         * MAC reply truncation
         * No retransmissions of LoRaWAN stack
         * Persistance DevNonce/JoinNonce
         * First uplink after Join Accept sent with the data rate used in the last Join Request
         * Configurable data rate for Join Request
         * No ADRAckReq feature if ADR disabled
         * ABP for testing purposes
         * Class C update according to LoRaWAN specification (e.g. CLASS_C_RESP_TIMEOUT / MAC Commands not allowed)
     - Allowed to queue an uplink (60s) to replace the empty uplink (e.g. with ACK or after FPending bit)
     - One uplink triggered after FPending bit
     - ProLink feature included for device to device communication
     - HCI Update:
         * GetNetworkStatus with NbTrans info
         * DeviceTimeReq Handling
         * LinkADRReq Configuration if ADR disabled removed
         * Link Disconnect Indication if ADR disabled

20.02.2020 - Release V2.0 / Build Count 167
     - Support for iM881A-XL added
     - LoRaWAN update:
         * Multicast in class C added
         * DevTimeReq support and time synchronization added (time synchronization not supported by iM881A-M)
         * MAC commands in Port 0 only visible for application if option enabled
     - LoRaWAN update for LoRaWAN Certification v1.6 EU686:
         * Trigger of LinkCheckReq added in TestApp for LoRaWAN certification
         * Bugfix in RxParamSetupReq with wrong parameters
         * Bugfix if invalid MAC command received: ignore it and continue normal operation
         * Bugfix if MAC command with wrong length received
         * Bugfix related to MAC commands (included in retransmission)
         * Bugfix in datarate range from NewChannelReq

06.09.2019 - Release V2.0 / Build Count 159
     - Default LoRaWAN settings updated
     - MAC commands in Port 0 only visible for application if option enabled
     - Update on EEPROM handling
     Note that it is recommended to set again the LoRaWAN settings after a firmware update 
     to ensure a correct functionality.

03.06.2019 - Release V2.0 / Build Count 156 (Beta Version)
     - Change on EEPROM access
     - DevTimeReq support and time synchronization added for iM880B/iU880B

12.04.2019 - Release V2.0 / Build Count 154 (Beta Version)
     - Change on EEPROM access during LoRaWAN activation

14.09.2018 - Release V2.0 / Build Count 152 (Beta Version)
     - Battery Level Status configuration added (for DevStatusAns)
	 - HCI Power-Up Indication configuration added
	 - Private LoRaWAN network configuration added
	 
14.03.2018 - Release V2.0 / Build Count 145 (Beta Version)
     - Configuration of Baudrate and Number of WakeUpChars
	 
06.02.2018 - Release V2.0 / Build Count 137
     - LoRaWAN frame counter changed to 32 bits
     - Class C optimization

23.01.2018 - Release V2.0 / Build Count 133 (Beta Version)
     - PowerSaver optimization
     - HCI changes:
        * Duty Cycle only configurable in Customer Mode
        * LinkADRReq configuration available in Customer Mode
        (0 = v1.0.2 (default), 1 = semtech proposal, 2 = KPN proposal)
     - Only EU region available (due to RED each region available in a different .hex file)
     - Bugfix in class C: Rx windows opened if a complete downlink received before
       (unlikely with the default settings).
     - Bugfix if unexpected downlink received 
       (downlink ignored if C-Data sent and no ACK included in the downlink frame)
     - No Data Indication with "Wrong Device Address" error not sent if device in class C
 
01.12.2017 - Release V2.0 / Build Count 123
     - Russia band removed
     - HCI changes: 
        * Max. size for piggybacked MAC commands configurable
        * New HCI message to configure the max. tx power for each sub-band (EU868)
     - Change on DevStatusAns: SNR value sent in Margin field 
     
18.10.2017 - Release V2.0 / Build Count 117
     - Two additional bands added for Russia support
     
21.09.2017 - Release V2.0 / Build Count 116
     - New bands added for Asia "AS 923 MHz" support (only available for iM980A)

15.09.2017 - Release V2.0 / Build Count 114
     - New settings in "RU 868 MHz" band for Russia
     
06.09.2017 - Release V2.0 / Build Count 113
     - New band "RU 868 MHz" added for Russia support
     - Change in EU868 due to RED: EIRP limited to 8dBm in 865-868 MHz sub-band
     
25.08.2017 - Release V2.0 / Build Count 112
     - Changes on tx power configuration (EIRP and RF Gain settings)
     - Changes on HCI interface:
        * "Get supported bands" message added
        * Change error code handling of set radio configuration

16.08.2017 - Release V2.0 / Build Count 111
     - LED control by Power Saving functionality removed
     - Bugfix in iM881A related to USART Tx pin status during Power Saving

10.08.2017 - Release V2.0 / Build Count 110
     - Bugfix related to random generator
     - Change on frame pending bit handling: max. 2 empty uplinks sent

20.07.2017 - Release V2.0 / Build Count 109
     - Bugfix related to class C and frame pending bit

27.06.2017 - Release V2.0 / Build Count 108
     - Changes according to LoRaWAN Regional Parameters v1.0.2rB     
     - Changes on HCI inteface: update for transmit indications and network status information       
     - Internal change in radio driver
     - Change in duty-cycle handling for EU868: 3 sub-bands with 1% duty-cycle
     - DIChannelReq added for LoRaWAN v1.0.2
     - Singapore 923 MHz and New Zealand 865 MHz Bands removed 
     - New band "IN865 865 MHz (Rx2: SF8)" for old setting. Band "IN865 865 MHz"
     implemented according to "LoRaWAN Regional Parameters v1 1 draft8" (e.g. SF10 in Rx2)
     - Change on both India bands: SF7BW125 as maximum datarate in Rx1 
     (according to "LoRaWAN Regional Parameters v1 1 draft8")
     - Maximum allowed payload sized from LoRaWAN Regional Parameters document satisfied
    
04.11.2016 - Release V1.17 / Build Count 82
    - FSK and SF7BW250 removed from default settings
    
29.09.2016 - Release V1.17 / Build Count 80
    - Random tx channel selection
    
12.09.2016 - Release V1.17 / Build Count 78
    - Change on HCI-Interface:
        * Device Reactivation added
    - First Release available for iM881A 

24.06.2016 - Release V1.16 / Build Count 72
    - Change on HCI-Interface:
        * RTC Alarm support
        * New Network Status "Joining OTAA" added. 
        A "Join Request" will be sent after a reset of module in case a 
        "Join Network" was requested.    
    - Swappping of Application EUI and Device EUI for LoRaWAN radio interface
    Note that it is recommended to set again the OTAA parameters and Device EUI 
    following the new byte ordering (MSB first) after a FW upgrade, to ensure 
    connectivity with the network server.
    
19.05.2016 - Release V1.15 / Build Count 68
    - ABP and OTAA parameters not readable
    - Change on HCI-Interface:
        * Custom Configuration added
        * Extended HCI Output configuration added in Radio Stack Configuration
    - New band "EU 868 MHz (Rx2: SF9)" added
    - Change on internal handling of ABP and OTAA parameters:
    Note that it is recommended to set the ABP and OTAA parameters after a
    FW upgrade/downgrade, because their content may be different.

19.04.2016 - Release V1.14 / Build Count 65
    - Changes according to LoRaWAN Specification V1.0.1:
        * Ignore frame if MAC commands simultaneously in payload and header
        * RXParamSetupAns & RXTimingSetupAns added in FOpts till downlink received
        * LinkADRReq discarded if channel mask disables all channels
        * ADRACKReq: device will further lower its data rate every ADR_ACK_DELAY
        * DutyCycleReq: "a value 0xFF means device is OFF" removed
    - Join Request automatically sent after reset, if device was activated by OTA
    - Bugfix: no HCI response sent if there is a gap between the received characters

18.03.2016 - Release V1.13 / Build Count 62
    - Current consumption improved: powersaving direct after Rx2
    - Singapore settings changed: SF12 for Rx2

26.02.2016 - Release V1.13 / Build Count 60
    - Set configuration: tx power, data rate and duty cycle change immediately
    - If band changed: device deactivated
    - Change on HCI-Interface: LORAWAN_STATUS_CHANNEL_NOT_AVAILABLE added
    
18.02.2016 - Release V1.13 / Build Count 58
    - Multi Band support: EU868, IN865, NZ 865 and SG923

05.02.2016 - Release V1.12 / Build Count 56
    - LoRa Alliance Certification
    - Frequency change for each retransmission of Join Request

01.02.2016 - Release V1.11 / Build Count 54
    - Optimization of Rx window timing
    - Changes on HCI-Interface (see WiMOD_LoRaWAN_EndNode_Modem_HCI_Spec_V1_3.pdf)
        * Number of retransmissions configurable
        * Device status with radio statistics added
    - Powersaving possible if Class C selected: ~11 mA

08.12.2015 - Release V1.11 / Build Count 45
    - Change on HCI-Interface: MAC commands support 
    (see WiMOD_LoRaWAN_EndNode_Modem_HCI_Spec_V1_1.pdf)
    - Three default channels enabled: 868.1MHz, 868.3MHz, 868.5MHz
    - Test Application included (for certification process)
    - Alive message sent after activation of device
    - LMiC V1.5, modifications:
        * LinkCheckReq command added according to LoRaWAN Specification V1.0
        * NbRep field of LinkADRReq added
        * MAX_FCNT_GAP added to downlink sequence number handling
        * No change of the default channels allowed using NewChannelReq
        * MAC commands reply with same order as request
        * If MAC answer is too big for header -> MAC commands sent as payload immediately
        * Changes in join procedure: stop sending after one join procedure
        (see WiMOD_LoRaWAN_EndNode_Modem_Feature_Spec_V1_1.pdf)
        * Error notification if channel blocked by duty cycle
        (see WiMOD_LoRaWAN_EndNode_Modem_HCI_Spec_V1_1.pdf)
        * ACK retransmitted if U-Data retransmission configured
        * Max packet length: 128 bytes (SF7-SF12) / 63 bytes (FSK)
        * Device address null allowed
            
15.09.2015 - Release V1.10 / Build Count 26
    - Default datarate for the second window changed to SF12 
    (Exp LoRa Studio V0.24.3 required)
    - Status byte added in HCI Ping command
    - Frame Penging bit added to HCI interface (see WiMOD_LoRaWAN_EndNode_Modem_HCI_Spec_V0_9.pdf)
      (WiMOD LoRaWAN EndNode Studio V0.23.1 required)
    - LMiC V1.5, modifications:
        * ADRACKReq changed according to LoRaWAN Specification V1.0
        * DLSettings and RxDelay within Join Accept added
        * LinkADRReq command accepted only if ADR enabled
        * Added reception of MAC commands sent in payload with port 0x00
        * DevStatusAns: margin between -32 and 31. Battery and margin sent in the correct byte order
        * RXTimingSetup command added
        * DLSettings within RXParamSetup command added
        * NewChannel command: a frequency value of 0 disables the channel
    
19.06.2015 - Release V1.8 / Build Count 20
    - Class C support added in LMiC V1.5:
        * No multicas messages support
        * No powersaving if Class C selected    	
    - HCI changes for Duty Cycle Control and Class C -> ExpLoRa Studio V0.21.2 required
    
29.05.2015 - Release V1.7 / Build Count 18
    - FSK mode support added/corrected in LMiC V1.5 + SX1273 Driver
    - HCI changes for FSK mode support -> Exp LoRa Studio / 
    WiMOD LoRaWAN EndNode Studio V0.21.0 required
    - HCI protocol according to WiMOD_LoRaWAN_EndNode_Modem_HCI_Spec_V0_7.pdf
    - Power Saving optimized: I_sleep  < 2uA
    
08.05.2015 - Release V1.5 / Build Count 10
    - LMiC V1.4 integrated, with modifications:
        * Deactivation of duty cycle management
        * Default datarate for the second window SF9 instead of SF12
        * Join request sent inmediatly (without adding random waiting time)
        * Join request frequencies changed: only 868.1, 868.3 and 868.5 MHz used
        * LinkAdrReq command implemented according to LoRaWAN Specification V1.0
        (if ChMaskCntl = 6, all defined channels enabled)
    - Changes on HCI-Interface (see WiMOD_LoRaWAN_HCI_Spec_V0_6.pdf)	  
    - Power Saving improved
        * 40 dummy characters for wakeup via HCI message required
    - Device-EUI handling changed
        * Device-EUI parameter removed from "Set/Get Join Parameter" messages
        * new Device-EUI Set/Get messages added 
        * Write-Protection added for Device-EUI
        * Customer Mode added for write access to 64-bit Device-EUI
    - System Operation Modes: Application Mode / Customer Mode added       
        * HCI messages for selection of operation mode added

20.04.2015 - Release V1.4 / Build Count 6
    - LMiC V1.4 integrated
    
16.04.2015 - Release V1.3 / Build Count 5 
    - First Release, based on LMiC 1.2

   
.4 Known Limitations
-----------------------------------------------------------------------------------------------------------
- Activation By Personalization only available for testing purposes
- Following limitations related to the time synchronization:
* GPS epoch time used to synchronize the time on the end-device.
Note that there is a small time different between the GPS epoch and the UTC time. 
Moreover, the configuration of the time zone is not available, so that no correction is performed. 
* The time synchronization is performed if the DeviceTimeAns is received in any unicast class A/C downlink.
This means, that a time synchronization is performed even if the end-device does not send any request.